//
// Created by sjjmw on 3/24/2022.
//
#include "iostream"
#include "vector"
#include "list"
#include "algorithm"
#include "string"
#include "unordered_map"
#include "cmath"
#include<iomanip>
#include "string"
#include "map"
#include "list"
struct Sol{
    std::string str;
    void recur(int begin,int end){
        bool has_0=false;
        bool has_1=false;
        for(int i=begin;i<=end;i++){
            if(str[i]=='0'){
                has_0= true;
            }
            else if(str[i]=='1'){
                has_1= true;
            }
        }
        if(end-begin>0){
            int mid=(end+begin)/2;
            recur(begin,mid);
            recur(mid+1,end);
        }
        if(has_1&&has_0){
            printf("F");
        }else if(has_1){
            printf("I");
        }else{
            printf("B");
        }
    }
    void handle(int n
            ){
        std::cin>>str;
        recur(0,str.size()-1);
        printf("\n");
//        printf("%d\n",ans);
    }
};
int main(){
//    int a,b,c;
    float a,b,c,d;
    int e;
    while(std::cin>>a){
        Sol().handle(a);
    }

    return 0;
}